#pragma once

#pragma warning(disable : 4005)
#pragma warning(disable : 4996)

#include <vector>
#include <string>
#include <iostream>
#include <filesystem>
#include <thread>
#include <mutex>
#include <map>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <optional>
#include <queue>
#include <stack>
#include <future>
#include <condition_variable>
#include <type_traits>
#include <algorithm>
#include <chrono>
#include <codecvt>
#include <locale>
#include <cstdint>
#include <type_traits>
#include <atomic>
#include <fstream>

#include <windows.h>
#include <wrl.h>
#include <dxgi1_4.h>
#include <d3d12.h>
#include <D3Dcompiler.h>
#include <DirectXMath.h>
#include <DirectXPackedVector.h>
#include <DirectXColors.h>
#include <DirectXCollision.h>
#include <memory>
#include <array>
#include <sstream>
#include <cassert>
#include <comdef.h>
#include <wrl/client.h>
#include <DirectXColors.h>
#include "D3DX12.h"

#define check(expression) assert(expression)

#define DISABLE_OPTIMIZATION __pragma(optimize("",off))
#define ENABLE_OPTIMIZATION  __pragma(optimize("",on))
